<template>
  <div class="detail">
    <!-- 顶部导航 -->
    <van-nav-bar
      title="详情页"
      left-text="返回"
      right-text="..."
      left-arrow
      @click-left="$router.go(-1)"
    />
    <!-- 店铺头部 -->
    <div class="shop-header" :style="{backgroundImage:'url('+(shopinfo.shopinfo && shopinfo.info.poi_back_pic_url)+ ')'}">
      <div class="left">
        <img :src="shopinfo.info && shopinfo.info.picUrl" alt="">
        <span>{{shopinfo.info && shopinfo.info.name}}</span>
      </div>
      <!-- 取消收藏按钮 -->
      <!-- <div class="right" v-if="isCollect" @click="$store.commit('cancel_collect',shopinfo.info)" style="color:red">❤</div> -->
      <div class="right" v-if="isCollect" @click="cancel_collect(shopinfo.info)" style="color:red">❤</div>
      <!-- 收藏按钮 -->
      <!-- <div class="right" v-else @click="collect(shopinfo.info)">❤</div> -->
      <div class="right" v-else @click="collect(shopinfo.info)" style="color:black">❤</div>
    </div>
    <!-- 店铺内的商品分类和列表 -->
    <div class="box">
      <div class="left">
        <van-sidebar v-model="currentIndex">
          <van-sidebar-item  v-for="(item,index) in shopinfo.taglist" :key="index" :title="item.name" />
        </van-sidebar>
      </div>
      <div class="right">
        <div class="good" v-for="(item,index) in shopinfo.taglist && shopinfo.taglist[currentIndex].goodlist" :key="index">
          <div class="imgbox">
            <img :src="item.picture" alt="">
          </div>
          <div class="text">
            <div class="up">
              <div class="name">{{item.name}}</div>
              <div class="desc">{{item.month_saled_content}}</div>
            </div>
            <div class="down">
              <div class="price">¥{{item.min_price}}</div>
              <div class="opes">
                <span>-</span>
                <span>1</span>
                <span>+</span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

  </div>
</template>

<script>
import {  mapState,mapMutations, } from "vuex";
import {Dialog} from 'vant';
import {shop_shopinfo} from '../utils/api';
export default {
  //导入vuex中的工具函数（辅助函数）,使用该工具函数，简化vuex在组件中的应用
  data(){
    return{
      currentIndex:0,
      shopinfo:{}
    }
  },
  computed:{
    //mapState()这个工具函数 会将vuex中的数据 映射到组件的computed中
    ...mapState(['collectlist']),
     //mapGetters()这个工具函数 会将vuex中的计算方法 映射到组件的computed中.
    //  ...mapGetters([]),
     isCollect(){//当前店铺是否已收藏(true表示已收藏 false表示未收藏)
      //拿到 当前店铺对象，还要同时拿到收藏列表，然后做判断，返回判断结果
      var index = this.collectlist.findIndex((item)=>{
        return item.mtWmPoiId == this.shopinfo.mtWmPoiId;
        
      })
      return index != -1
     }
  },
  methods:{
    //mapMutations()这个工具函数 会将vuex中的同步方法 映射到组件的methods中.
    ...mapMutations(['collect','cancel_collect']),
    //mapActions()这个工具函数 会将vuex中的异步方法 映射到组件的methods中.
    // ...mapActions([])
  },
  mounted(){
    shop_shopinfo({id:this.$route.params.id}).then((res)=>{
      if(res.data.shopinfo){//店铺正常营业
        this.shopinfo = res.data.shopinfo;
        console.log(res.data);

      }
      else{//店铺倒闭
        Dialog.alert({
          title: '提示',
          message: '该店铺已倒闭!'
        }).then(()=>{
          this.$router.go(-1);
        })

      }
    })
  }
}
</script>

<style lang='scss' scoped>
.shop-header{
  display: flex;
  justify-content: space-between;
  padding: 50px 10px;
  background-size: cover;
  background-repeat: no-repeat;
  color: white;
  .left{
    flex:1;
    display: flex;
    align-items: center;
    img{
      width: 30px;
      margin-right: 10px;
      border-radius: 50%;
    }
  }
  .right{
    width: 20px;
    text-align: right;
  }
}
.box{
  display: flex;
  .left{
    width: 80px;
  }
  .right{
    flex:1;
    .good{
      display: flex;
      margin: 10px;
      .imgbox{
        width: 80px;
        margin-right: 10px;
        img{
          width: 100%;
        }
      }
      .text{
        flex:1;
        font-size: 12px;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        .down{
          display: flex;
          justify-content: space-between;
        }
      }
    }
  }
}
</style>